import axios from "axios";
import { baseURL } from "./request";

// 使用CORS代理获取图片并转为Base64
export const convertImageToBase64 = async (url) => {
    try {
        // 使用公共CORS代理（注意：可能不稳定，建议自建）
        // const proxyUrl = 'https://corsproxy.org/?';
        console.log('开始下载图片:', url);
        const proxyUrl2 = getProxyImageUrl(url);
        console.log('使用代理下载图片:', proxyUrl2);
        //   const response = await fetch(proxyUrl + encodeURIComponent(url));
        // const response = await request.get(proxyUrl2);
        // 创建axios实例并设置baseURL
        const instance = axios.create({
            baseURL: '/baidu-feed' // 设置基础URL
        });

        // 使用带baseURL的实例发起请求
        const response = await instance.get(proxyUrl2);


        if (!response.ok) throw new Error('图片下载失败');

        const blob = await response.blob();
        return await new Promise((resolve) => {
            const reader = new FileReader();
            reader.onloadend = () => resolve(reader.result);
            reader.readAsDataURL(blob);
        });
    } catch (error) {
        console.error('图片转换失败:', url, error);
        return '/placeholder.jpg'; // 返回本地占位图路径
    }
};
/**
 * 转换百度图片URL为代理URL
 * @param {string} originalUrl 
 * @returns {string} 代理后的安全URL
 */
export const getProxyImageUrl = (originalUrl) => {
    try {
        const url = new URL(originalUrl)

        // 仅处理百度图片域名
        if (url.host.match(/pics\d\.baidu\.com$/)) {
            const feedPath = originalUrl.match(/\/feed\/.+$/)?.[0] || ''

            // 方案1：精确路径匹配（推荐）
            return `${feedPath}`

            // 方案2：通配路径匹配
            // return `/baidu-img${feedPath}`
        }

        return originalUrl
    } catch {
        return originalUrl
    }
}

/**
 * 批量处理HTML内容中的图片
 */
export const processHtmlImages = (html) => {
    return html.replace(
        /<img[^>]+src="([^"]*pics\d\.baidu\.com[^"]*)"/g,
        (match, src) => match.replace(src, getProxyImageUrl(src))
    )
}
/**
 * 处理百度图片URL
 * @param {string} originalUrl 原始URL
 * @returns 代理后的URL或原始URL
 */
/* export const getProxyImageUrl = (originalUrl) => {
    try {
        const urlObj = new URL(originalUrl);

        // 仅处理百度picsX域名下的图片
        if (/pics\d\.baidu\.com/.test(urlObj.host)) {
            // 提取/feed之后的部分（包括query参数）
            const feedPath = originalUrl.match(/\/feed.*$/)?.[0] || '';
            // console.log('qq');
            return `${feedPath}`;
        }

        return originalUrl;
    } catch {
        return originalUrl;
    }
}
 */
export const imageUrlToBase64 = (url) => {
    return new Promise((resolve, reject) => {
        // 创建 XMLHttpRequest 对象（也可以用 fetch API）
        const xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.responseType = 'blob'; // 指定响应类型为 Blob

        xhr.onload = function () {
            if (xhr.status === 200) {
                // 获取 Blob 对象
                const blob = xhr.response;

                // 创建 FileReader 来转换 Blob 为 Base64
                const reader = new FileReader();
                reader.onloadend = () => resolve(reader.result);
                reader.onerror = reject;
                reader.readAsDataURL(blob);
            } else {
                reject(new Error('图片加载失败，状态码：' + xhr.status));
            }
        };

        xhr.onerror = function () {
            reject(new Error('网络请求失败'));
        };

        xhr.send();
    });
}